home *** CD-ROM | disk | FTP | other *** search
/ CD/PC Actual Thematic 7: Programming / CDAT7.iso / demos / VisualAge for Java 2.0 Entry / setup / data1.cab / ide-e / IDE / cache / B4E8AM (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-16  |  4.3 KB  |  129 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.JComponent;
  4. import com.sun.java.swing.JMenu;
  5. import com.sun.java.swing.KeyStroke;
  6. import com.sun.java.swing.MenuElement;
  7. import com.sun.java.swing.event.ChangeEvent;
  8. import com.sun.java.swing.event.ChangeListener;
  9. import java.awt.Component;
  10. import java.awt.Container;
  11. import java.awt.Window;
  12. import java.io.Serializable;
  13.  
  14. class BasicMenuUI$MenuChangeListener implements ChangeListener, Serializable {
  15.    JMenu menu;
  16.    // $FF: renamed from: ui com.sun.java.swing.plaf.basic.BasicMenuUI
  17.    BasicMenuUI field_0;
  18.    boolean isSelected = false;
  19.    Component wasFocused;
  20.  
  21.    public BasicMenuUI$MenuChangeListener(JMenu m, BasicMenuUI ui) {
  22.       this.menu = m;
  23.       this.field_0 = ui;
  24.       this.validateKeyboardActions(this.menu.isSelected());
  25.    }
  26.  
  27.    public void stateChanged(ChangeEvent e) {
  28.       this.field_0.validateKeyboardAccelerator();
  29.       this.validateKeyboardActions(this.menu.isSelected());
  30.    }
  31.  
  32.    Component findFocusedComponent(Component c) {
  33.       for(Container parent = c.getParent(); parent != null; parent = ((Component)parent).getParent()) {
  34.          if (parent instanceof Window) {
  35.             return ((Window)parent).getFocusOwner();
  36.          }
  37.       }
  38.  
  39.       return null;
  40.    }
  41.  
  42.    void validateKeyboardActions(boolean sel) {
  43.       if (sel != this.isSelected) {
  44.          this.isSelected = sel;
  45.          if (this.isSelected) {
  46.             boolean isRequestFocusEnabled = this.menu.isRequestFocusEnabled();
  47.             this.wasFocused = this.findFocusedComponent(this.menu);
  48.             if (!isRequestFocusEnabled) {
  49.                this.menu.setRequestFocusEnabled(true);
  50.             }
  51.  
  52.             this.menu.requestFocus();
  53.             if (!isRequestFocusEnabled) {
  54.                this.menu.setRequestFocusEnabled(false);
  55.             }
  56.  
  57.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.CancelAction(this), KeyStroke.getKeyStroke(27, 0, false), 2);
  58.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.SelectNextItemAction(this), KeyStroke.getKeyStroke(40, 0, false), 2);
  59.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.SelectPreviousItemAction(this), KeyStroke.getKeyStroke(38, 0, false), 2);
  60.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.SelectParentItemAction(this), KeyStroke.getKeyStroke(37, 0, false), 2);
  61.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.SelectChildItemAction(this), KeyStroke.getKeyStroke(39, 0, false), 2);
  62.             this.menu.registerKeyboardAction(new BasicMenuUI.MenuChangeListener.ReturnAction(this), KeyStroke.getKeyStroke(10, 0, false), 2);
  63.          } else {
  64.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(27, 0, false));
  65.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(40, 0, false));
  66.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(38, 0, false));
  67.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(37, 0, false));
  68.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(39, 0, false));
  69.             this.menu.unregisterKeyboardAction(KeyStroke.getKeyStroke(10, 0, false));
  70.             if (this.wasFocused != null) {
  71.                if (this.wasFocused instanceof JComponent) {
  72.                   JComponent jc = (JComponent)this.wasFocused;
  73.                   boolean isRFEnabled = jc.isRequestFocusEnabled();
  74.                   if (!isRFEnabled) {
  75.                      jc.setRequestFocusEnabled(true);
  76.                   }
  77.  
  78.                   this.wasFocused.requestFocus();
  79.                   if (!isRFEnabled) {
  80.                      jc.setRequestFocusEnabled(false);
  81.                   }
  82.                } else {
  83.                   this.wasFocused.requestFocus();
  84.                }
  85.  
  86.                this.wasFocused = null;
  87.             }
  88.          }
  89.       }
  90.  
  91.    }
  92.  
  93.    private MenuElement nextEnabledChild(MenuElement[] e, int fromIndex) {
  94.       int i = fromIndex;
  95.  
  96.       for(int c = e.length; i < c; ++i) {
  97.          if (e[i] != null) {
  98.             Component comp = e[i].getComponent();
  99.             if (comp != null && comp.isEnabled()) {
  100.                return e[i];
  101.             }
  102.          }
  103.       }
  104.  
  105.       return null;
  106.    }
  107.  
  108.    private MenuElement previousEnabledChild(MenuElement[] e, int fromIndex) {
  109.       for(int i = fromIndex; i >= 0; --i) {
  110.          if (e[i] != null) {
  111.             Component comp = e[i].getComponent();
  112.             if (comp != null && comp.isEnabled()) {
  113.                return e[i];
  114.             }
  115.          }
  116.       }
  117.  
  118.       return null;
  119.    }
  120.  
  121.    static MenuElement access$previousEnabledChild(BasicMenuUI$MenuChangeListener var0, MenuElement[] var1, int var2) {
  122.       return var0.previousEnabledChild(var1, var2);
  123.    }
  124.  
  125.    static MenuElement access$nextEnabledChild(BasicMenuUI$MenuChangeListener var0, MenuElement[] var1, int var2) {
  126.       return var0.nextEnabledChild(var1, var2);
  127.    }
  128. }
  129.